Skip to content

Fix GH-1132: Document mb_strlen invalid encoding behavior change in P…#5418

Open
GabrielCordeiroBarrosoTeles wants to merge 2 commits intophp:masterfrom
GabrielCordeiroBarrosoTeles:fix-gh-1132-mb-strlen-invalid-encoding-changelog
Open

Fix GH-1132: Document mb_strlen invalid encoding behavior change in P…#5418
GabrielCordeiroBarrosoTeles wants to merge 2 commits intophp:masterfrom
GabrielCordeiroBarrosoTeles:fix-gh-1132-mb-strlen-invalid-encoding-changelog

Conversation

@GabrielCordeiroBarrosoTeles

Fixes #1132

Documents that passing an invalid encoding to mb_strlen() had undefined behavior before PHP 8.0 (could return false) and that as of PHP 8.0 a ValueError is thrown instead, as suggested in the issue discussion.

<entry>8.0.0</entry>
<entry>
Passing an invalid encoding now throws a
<classname>ValueError</classname>. Previously, the return value was
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please use <exceptionname>ValueError</exceptionname> instead.

And Previously, &false; was returned. makes more sense here since prior to 8.0, false was always returned on error.

https://github.com/php/php-src/blob/PHP-7.4.33/ext/mbstring/mbstring.c#L2503

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done, @jordikroon . Switched to <exceptionname>ValueError</exceptionname> and updated to "Previously, &false; was returned." to match the PHP 7.4 source. Thanks.

@lacatoire
Copy link
Member

lacatoire commented Mar 24, 2026

Hi, i checked in php-src and the ValueError for invalid encodings comes from php_mb_get_encoding() (commit [21227dc1f19](php/php-src@21227dc1f19e
a9007ecfc6929261f16900359c4d), which is shared across many most functions, not just mb_strlen.

Currently only mb_convert_encoding and mb_encoding_aliases document this 8.0.0 change. Would it make sense to extend this PR to cover the other functions as well?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Providing an incorrect encoding to mb_strlen returns false before PHP 8.0

3 participants